import com.adobe.serialization.json.JSON;

import mx.collections.ArrayCollection;
import mx.controls.Alert;

public var usuario:String="";
public var clave:String="";
public var servicio:String="http://java.cdaandino.com/rtm/PanelIndicadores/PanelService.svc";
//public var servicio:String="http://localhost:1071/PanelService.svc";

private var timer:Timer;
private var timerWebService:Timer;
private var timerWebServiceMensaje:Timer;
[Bindable] private var indexTab:int=0;

[Bindable] private var RES_FECHAHORA:String = "";
[Bindable] private var RES_DIS:String = "";
[Bindable] private var RES_GERENTE:String = "";
[Bindable] private var RES_PERFIL:String = "";
[Bindable] private var CDA_TITULO:String = "";   
[Bindable] private var RES_REG:String = "Rol";
[Bindable] private var RES_LBL:String = "name"; 
[Bindable] private var PLAY_BUTON:String = "Iniciar";

[Bindable] public var arrayRegion:ArrayCollection = new ArrayCollection();
[Bindable] public var Mensaje_Trama:Array = new Array();

[Bindable] public var SMITH_Global_Mensual:Array = new Array();
[Bindable] public var SMITH_Global_Anual:Array = new Array();
[Bindable] public var DECKER_Global_Mensual:Array = new Array();
[Bindable] public var DECKER_Global_Anual:Array = new Array();
[Bindable] public var Maximum_Global_Mensual:String = "";
[Bindable] public var Maximum_Global_Anual:String = "";

[Bindable] public var SMITH_Efectividad_Mensual:Array = new Array();
[Bindable] public var SMITH_Efectividad_Anual:Array = new Array();
[Bindable] public var DECKER_Efectividad_Mensual:Array = new Array();
[Bindable] public var DECKER_Efectividad_Anual:Array = new Array();
[Bindable] public var Maximum_Efectividad_Mensual:String = "";
[Bindable] public var Maximum_Efectividad_Anual:String = "";

[Bindable] public var SMITH_Cumplimiento_Mensual:Array = new Array();
[Bindable] public var DECKER_Cumplimiento_Mensual:Array = new Array();
[Bindable] public var Maximum_Cumplimiento_Mensual:String = "";
[Bindable] public var SMITH_Cumplimiento_Anual:Array = new Array();
[Bindable] public var DECKER_Cumplimiento_Anual:Array = new Array();
[Bindable] public var Maximum_Cumplimiento_Anual:String = "";

[Bindable] public var SMITH_Volumen_Mensual:Array = new Array();
[Bindable] public var DECKER_Volumen_Mensual:Array = new Array();
[Bindable] public var Maximum_Volumen_Mensual:String = "";
[Bindable] public var SMITH_Volumen_Anual:Array = new Array();
[Bindable] public var DECKER_Volumen_Anual:Array = new Array();
[Bindable] public var Maximum_Volumen_Anual:String = "";

[Embed(source="play_6x8.png")]
[Bindable]
public var imgClsPlay:Class;   
      
[Embed(source="pause_6x8.png")]
[Bindable]
public var imgClsPause:Class;

[Embed(source="1 Login.fw_r2_c1.jpg")]	
[Bindable]
public var imgClsFondo:Class;

private function init():void{
	
	timer = new Timer(1000 * 10);
	timer.addEventListener(TimerEvent.TIMER, timer_timer);
	
	timerWebService = new Timer(1000 * 60 * 5);
	timerWebService.addEventListener(TimerEvent.TIMER, timerWebService_timer);
	timerWebService.stop();
	
	timerWebServiceMensaje = new Timer(1000 * 60);
	timerWebServiceMensaje.addEventListener(TimerEvent.TIMER, timerWebServiceMensaje_timer);
	timerWebServiceMensaje.stop();
	
}

private function timerWebServiceMensaje_timer(evt:TimerEvent):void {
	timerWebServiceMensaje.stop();
	callWebService_Mensaje();
	Mask.close();
	timerWebServiceMensaje.start();
}

private function timerWebService_timer(evt:TimerEvent):void {
	timerWebService.stop();
	callWebService_Detalle();
	Mask.close();
	timerWebService.start();
}		

 private function timer_timer(evt:TimerEvent):void {
 	if(indexTab<3){
 		indexTab++;
 	}else{
 		indexTab=0;
 	}		 	
 }	
 
 protected function btn_clickHandler(event:MouseEvent):void{
 	if(PLAY_BUTON=="Iniciar"){
 		indexTab = viewData.selectedIndex;
 		PLAY_BUTON="Detener";
 		Play.setStyle("icon", imgClsPause);
 		timer.start();
 	}else{
 		PLAY_BUTON="Iniciar";
 		Play.setStyle("icon", imgClsPlay);
 		timer.stop();		 		
 	}
 }
 
private function changeRegion():void {
	callWebService_Detalle();	
}	

public function callWebService_Cabecera():void
{		
	Mask.show("");	
	var loader:URLLoader = new URLLoader();
	var header1:URLRequestHeader = null;
	header1 = new URLRequestHeader("pragma", "no-cache");
	var request:URLRequest = new URLRequest(servicio + "/cab");
	request.requestHeaders.push(header1);
	request.method = URLRequestMethod.POST;	
	
	request.data = '<string xmlns="http://schemas.microsoft.com/2003/10/Serialization/">{"USU":"'+ usuario +'","CLA":"' + clave + '"}</string>';
	  
	request.contentType = "text/xml";
	loader.addEventListener(Event.COMPLETE, onLoaded_Cabecera);
	loader.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
	
	try{
		loader.load(request);
	}catch(error:ArgumentError){
		trace("An ArgumentError has occurred.");
		
		Mask.close(); 
	}catch (error:SecurityError) 
	{ 		    
	    trace("A SecurityError has occurred.");	      
	    Mask.close();
	}		
}

private function onLoaded_Cabecera(e:Event):void 
{		
	var repuesta:String=e.target.data;
	repuesta = repuesta.replace("<string xmlns=\"http://schemas.microsoft.com/2003/10/Serialization/\">","");
	repuesta = repuesta.replace("</string>","");
	
	var arr:Object = JSON.decode(repuesta);
	var cab:Object = arr.CAB;
		
	CDA_TITULO = "";
	RES_FECHAHORA = "";
	RES_GERENTE = "";
	RES_PERFIL="";
	arrayRegion.removeAll();
	
	if(cab==null) 
	{
		Mask.close();
		mx.controls.Alert.show("Error de inicio de sesion nombre de usuario o contraseña incorrecta."); 
		return;
	}
	
	CDA_TITULO = cab.DIS;
	RES_FECHAHORA = cab.FEC + " " + cab.HOR;
	RES_GERENTE = cab.GER;
	RES_PERFIL = cab.PER;
	
	var i:int = 0;	
	/*Load Regiones*/
	for (i = 0; i < cab.ROL.length; i++) 
	{
		arrayRegion.addItem(cab.ROL[i].ROL);
	}
	Mask.close();
	callWebService_Detalle();
	Mask.close();
	callWebService_Mensaje();
	Mask.close();		
	vsMain.selectedChild=cnvRegister
	timerWebService.start();
	timerWebServiceMensaje.start();
}

public function callWebService_Detalle():void
{		
	Mask.show("");
	var deposito:String=CDA_TITULO.toString().substr(0,2);	
	var region:String="";
	var perfil:String=RES_PERFIL;
	
	if(comboReg==null)
	{
		region = arrayRegion[0];	
	}
	else
	{
		region = comboReg.selectedLabel.toString();
	}
	
	if(deposito=="" || region=="")
	{		
		Mask.close();
		mx.controls.Alert.show("Error cargando detalle, falta parametros."); 
		return;
	}
			
	var loader:URLLoader = new URLLoader();
	var header1:URLRequestHeader = null;
	header1 = new URLRequestHeader("pragma", "no-cache");
	var request:URLRequest = new URLRequest(servicio + "/det");
	request.requestHeaders.push(header1);
	request.method = URLRequestMethod.POST;	
	
	request.data = '<string xmlns="http://schemas.microsoft.com/2003/10/Serialization/">{"DEP":"'+ deposito +'","ROL":"' + region + '","PER":"'+perfil+'"}</string>';
	  
	request.contentType = "text/xml";
	loader.addEventListener(Event.COMPLETE, onLoaded_Detalle);
	loader.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
	
	try{
		loader.load(request);
	}catch(error:ArgumentError){
		trace("An ArgumentError has occurred.");
		Mask.close(); 
	}catch (error:SecurityError) 
	{ 		    
	    trace("A SecurityError has occurred."); 
	    Mask.close();
	}		
}

private function onLoaded_Detalle(e:Event):void 
{		
	var repuesta:String=e.target.data;
	repuesta = repuesta.replace("<string xmlns=\"http://schemas.microsoft.com/2003/10/Serialization/\">","");
	repuesta = repuesta.replace("</string>","");
	
	var arr:Object = JSON.decode(repuesta);
	var det:Object = arr.DET;
			
	SMITH_Global_Mensual = new Array();
	DECKER_Global_Mensual = new Array();
	SMITH_Global_Anual = new Array();
	DECKER_Global_Anual = new Array();
	Maximum_Global_Mensual = "100";
	Maximum_Global_Anual = "100";
	
	SMITH_Efectividad_Mensual = new Array();
	DECKER_Efectividad_Mensual = new Array();
	SMITH_Efectividad_Anual = new Array();
	DECKER_Efectividad_Anual = new Array();
	Maximum_Efectividad_Mensual = "100";
	Maximum_Efectividad_Anual = "100";
	
	SMITH_Cumplimiento_Mensual = new Array();
	DECKER_Cumplimiento_Mensual = new Array();
	SMITH_Cumplimiento_Anual = new Array();
	DECKER_Cumplimiento_Anual = new Array();
	Maximum_Cumplimiento_Mensual = "100";
	Maximum_Cumplimiento_Anual = "100";
		
	SMITH_Volumen_Mensual = new Array();
	DECKER_Volumen_Mensual = new Array();
	SMITH_Volumen_Anual = new Array();
	DECKER_Volumen_Anual = new Array();
	Maximum_Volumen_Mensual = "100";
	Maximum_Volumen_Anual = "100";
	
	var i:int = 0;	
		
	//Load Eficiencia Global Mensual
	Maximum_Global_Mensual = det.MMAXG;
	for (i = 0; i < det.MGLO.length; i++) 
	{
		SMITH_Global_Mensual.push({Ruta:det.MGLO[i].NOM, dato1:det.MGLO[i].AVA,dato2:det.MGLO[i].CUO})
		DECKER_Global_Mensual.push({Ruta:det.MGLO[i].NOM, dato1:det.MGLO[i].OBJ});
	}	
	
	//Load Eficiencia Global Anual
	Maximum_Global_Anual = det.AMAXG;
	for (i = 0; i < det.AGLO.length; i++) 
	{
		SMITH_Global_Anual.push({Ruta:det.AGLO[i].NOM, dato1:det.AGLO[i].AVA,dato2:det.AGLO[i].CUO})
		DECKER_Global_Anual.push({Ruta:det.AGLO[i].NOM, dato1:det.AGLO[i].OBJ});
	}
	
	//Load Efectividad Mensual
	Maximum_Efectividad_Mensual = det.MMAXE;
	for (i = 0; i < det.MEFE.length; i++) 
	{
		SMITH_Efectividad_Mensual.push({Ruta:det.MEFE[i].NOM, dato1:det.MEFE[i].AVA,dato2:det.MEFE[i].CUO})
		DECKER_Efectividad_Mensual.push({Ruta:det.MEFE[i].NOM, dato1:det.MEFE[i].OBJ});
	}
	
	//Load Efectividad Anual
	Maximum_Efectividad_Anual = det.AMAXE;
	for (i = 0; i < det.AEFE.length; i++) 
	{
		SMITH_Efectividad_Anual.push({Ruta:det.AEFE[i].NOM, dato1:det.AEFE[i].AVA,dato2:det.AEFE[i].CUO})
		DECKER_Efectividad_Anual.push({Ruta:det.AEFE[i].NOM, dato1:det.AEFE[i].OBJ});
	}
	
	//Load Cumplimiento Mensual
	Maximum_Cumplimiento_Mensual = det.MMAXC;
	for (i = 0; i < det.MCUM.length; i++) 
	{
		SMITH_Cumplimiento_Mensual.push({Ruta:det.MCUM[i].NOM, dato1:det.MCUM[i].AVA,dato2:det.MCUM[i].CUO})
		DECKER_Cumplimiento_Mensual.push({Ruta:det.MCUM[i].NOM, dato1:det.MCUM[i].OBJ});
	}
	
	//Load Cumplimiento Anual
	Maximum_Cumplimiento_Anual = det.AMAXC;
	for (i = 0; i < det.ACUM.length; i++) 
	{
		SMITH_Cumplimiento_Anual.push({Ruta:det.ACUM[i].NOM, dato1:det.ACUM[i].AVA,dato2:det.ACUM[i].CUO})
		DECKER_Cumplimiento_Anual.push({Ruta:det.ACUM[i].NOM, dato1:det.ACUM[i].OBJ});
	}
	
	//Load Eficiencia Volumen Mensual
	Maximum_Volumen_Mensual = det.MMAXA;
	
	for (i = 0; i < det.MAVA.length; i++) 
	{
		SMITH_Volumen_Mensual.push({Ruta:det.MAVA[i].NOM, dato1:det.MAVA[i].AVA,dato2:det.MAVA[i].CUO})
		DECKER_Volumen_Mensual.push({Ruta:det.MAVA[i].NOM, dato1:det.MAVA[i].OBJ});
	}
	
	//Load Eficiencia Volumen Anual
	Maximum_Volumen_Anual = det.AMAXA;
	
	for (i = 0; i < det.AAVA.length; i++) 
	{
		SMITH_Volumen_Anual.push({Ruta:det.AAVA[i].NOM, dato1:det.AAVA[i].AVA,dato2:det.AAVA[i].CUO})
		DECKER_Volumen_Anual.push({Ruta:det.AAVA[i].NOM, dato1:det.AAVA[i].OBJ});
		//SMITH_Volumen_Anual.push({Ruta:cab.GLO[i].NOM, dato1:Math.random()*90,dato2:Math.random()*90})
		//DECKER_Volumen_Anual.push({Ruta:cab.AVA[i].NOM, dato1:Math.random()*90});		
	}
		
	graf01.loadData();	
	Mask.close();
}

private function ioErrorHandler(event:IOErrorEvent):void
{	
    trace("ioErrorHandler: " + event);    
    Mask.close();
}

private function callWebService_Mensaje():void
{		
	Mask.show("");
	var deposito:String=CDA_TITULO.toString().substr(0,2);	
	var region:String="";
	
	if(comboReg==null)
	{
		region = arrayRegion[0];	
	}
	else
	{
		region = comboReg.selectedLabel.toString();
	}
	
	if(deposito=="" || region=="")
	{		
		Mask.close();
		mx.controls.Alert.show("Error cargando detalle, falta parametros."); 
		return;
	}	
	
	var loader:URLLoader = new URLLoader();
	var header1:URLRequestHeader = null;
	header1 = new URLRequestHeader("pragma", "no-cache");
	var request:URLRequest = new URLRequest(servicio + "/men");
	request.requestHeaders.push(header1);
	request.method = URLRequestMethod.POST;
	
	request.data = '<string xmlns="http://schemas.microsoft.com/2003/10/Serialization/">{"DEP":"'+ deposito +'","ROL":"' + region + '"}</string>';
  
	request.contentType = "text/xml";
	loader.addEventListener(Event.COMPLETE, onLoaded_Mensaje);
	loader.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
	
	try{
		loader.load(request);
	}catch(error:ArgumentError){
		trace("An ArgumentError has occurred.");
		Mask.close(); 
	}catch (error:SecurityError) 
	{ 		    
	    trace("A SecurityError has occurred."); 
	    Mask.close();
	}		
}

private function onLoaded_Mensaje(e:Event):void 
{		
	var repuesta:String=e.target.data;
	repuesta = repuesta.replace("<string xmlns=\"http://schemas.microsoft.com/2003/10/Serialization/\">","");
	repuesta = repuesta.replace("</string>","");
	
	var arr:Object = JSON.decode(repuesta);
	var men:Object = arr.MEN;
	
	Mensaje_Trama = new Array();
	if(men==null) {Mask.close(); return;}
	
	for (var i:int = 0; i < men.length; i++) 
	{
		Mensaje_Trama.push({FechaInicial:men[i].FEI, HoraInicial:men[i].HOI, Mensaje:men[i].MEN, FechaFinal:men[i].FEF, HoraFinal:men[i].HOF});
	}	
	
	Mask.close();
	Mask.close();
	
}

